怎么以特权模式运行容器 | 您所在的位置:网站首页 › linux deploy 特权用户 › 怎么以特权模式运行容器 |
背景:在容器中执行 systemctl start 命令启动服务时报错:[root@1ac7516661e1 /]# systemctl start nginx
Failed to get D-Bus connection: Operation not permitted 小编这里是使用docker run 启动的容器,相信很多小伙伴刚接触容器的时候应该都遇到过这个问题。 这里针对这个问题,小编分别从docker 和 kubernetes 两个维度来分析怎么解决这个问题。 先查看报错原因: https://forum.huawei.com/enterprise/zh/thread-427747-1-1.html 可以参考这里面的方法,问题原因这里 说的还是比较详细的 文档中也有针对docker 环境解决方案做说明: 话不多说,这里直接输出问题解决方案: Docker环境:容器时添加 --privileged=true 参数 并使用 /usr/sbin/init 的运行环境 创建容器: # docker run -d --name centos7 --privileged=true centos:7 /usr/sbin/init进入容器: # docker exec -it centos7 /bin/bash这样可以使用systemctl启动服务了。 ps:这里不建议直接使用特权模式以 docker run -it 这种模式进入容器,如果以特权模式创建容器, 会检查很多启动项,最终也会处于卡死的情况,类似下面这样: ![]() 以特权模式运行容器的效果 ![]() 针对k8s 集群环境怎么创建特权级容器,网上并未找到特别详细的说明文档,这里也是参考docker 环境中的操作,加上自己的不断试验,整理操作方式给到大家。 通过上面docker 环境 可以看出,是需要添加 --privileged=true 和 /usr/sbin/init 运行环境。 k8s 创建容器资源的时候同样是需要在yaml 文件中指定这两个参数: ![]() 进入k8s 创建的pod 测试效果: ![]() 如果使用腾讯云TKE 集群环境,可以在控制台图形化界面创建容器,相关配置: 集群——工作负载——deployment(为例)—— 容器——显示高级设置 ![]() |
CopyRight 2018-2019 实验室设备网 版权所有 |